/* **********************************************************************************
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* **********************************************************************************/

using System;
using System.Collections.Generic;
using System.Text;

namespace OfficeOpenXMLInterop
{
    #region Simple Types

    // Used in CT_Path2D
    [Serializable]
    public enum ItemsChoiceType
    {
        arcTo,
        close,
        cubicBezTo,
        lnTo,
        moveTo,
        quadBezTo,
    }

    [Serializable]
    public enum ST_ShapeType
    {
        line,
        lineInv,
        triangle,
        rtTriangle,
        rect,
        diamond,
        parallelogram,
        trapezoid,
        nonIsoscelesTrapezoid,
        pentagon,
        hexagon,
        heptagon,
        octagon,
        decagon,
        dodecagon,
        star4,
        star5,
        star6,
        star7,
        star8,
        star10,
        star12,
        star16,
        star24,
        star32,
        roundRect,
        round1Rect,
        round2SameRect,
        round2DiagRect,
        snipRoundRect,
        snip1Rect,
        snip2SameRect,
        snip2DiagRect,
        plaque,
        ellipse,
        teardrop,
        homePlate,
        chevron,
        pieWedge,
        pie,
        blockArc,
        donut,
        noSmoking,
        rightArrow,
        leftArrow,
        upArrow,
        downArrow,
        stripedRightArrow,
        notchedRightArrow,
        bentUpArrow,
        leftRightArrow,
        upDownArrow,
        leftUpArrow,
        leftRightUpArrow,
        quadArrow,
        leftArrowCallout,
        rightArrowCallout,
        upArrowCallout,
        downArrowCallout,
        leftRightArrowCallout,
        upDownArrowCallout,
        quadArrowCallout,
        bentArrow,
        uturnArrow,
        circularArrow,
        leftCircularArrow,
        leftRightCircularArrow,
        curvedRightArrow,
        curvedLeftArrow,
        curvedUpArrow,
        curvedDownArrow,
        swooshArrow,
        cube,
        can,
        lightningBolt,
        heart,
        sun,
        moon,
        smileyFace,
        irregularSeal1,
        irregularSeal2,
        foldedCorner,
        bevel,
        frame,
        halfFrame,
        corner,
        diagStripe,
        chord,
        arc,
        leftBracket,
        rightBracket,
        leftBrace,
        rightBrace,
        bracketPair,
        bracePair,
        straightConnector1,
        bentConnector2,
        bentConnector3,
        bentConnector4,
        bentConnector5,
        curvedConnector2,
        curvedConnector3,
        curvedConnector4,
        curvedConnector5,
        callout1,
        callout2,
        callout3,
        accentCallout1,
        accentCallout2,
        accentCallout3,
        borderCallout1,
        borderCallout2,
        borderCallout3,
        accentBorderCallout1,
        accentBorderCallout2,
        accentBorderCallout3,
        wedgeRectCallout,
        wedgeRoundRectCallout,
        wedgeEllipseCallout,
        cloudCallout,
        cloud,
        ribbon,
        ribbon2,
        ellipseRibbon,
        ellipseRibbon2,
        leftRightRibbon,
        verticalScroll,
        horizontalScroll,
        wave,
        doubleWave,
        plus,
        flowChartProcess,
        flowChartDecision,
        flowChartInputOutput,
        flowChartPredefinedProcess,
        flowChartInternalStorage,
        flowChartDocument,
        flowChartMultidocument,
        flowChartTerminator,
        flowChartPreparation,
        flowChartManualInput,
        flowChartManualOperation,
        flowChartConnector,
        flowChartPunchedCard,
        flowChartPunchedTape,
        flowChartSummingJunction,
        flowChartOr,
        flowChartCollate,
        flowChartSort,
        flowChartExtract,
        flowChartMerge,
        flowChartOfflineStorage,
        flowChartOnlineStorage,
        flowChartMagneticTape,
        flowChartMagneticDisk,
        flowChartMagneticDrum,
        flowChartDisplay,
        flowChartDelay,
        flowChartAlternateProcess,
        flowChartOffpageConnector,
        actionButtonBlank,
        actionButtonHome,
        actionButtonHelp,
        actionButtonInformation,
        actionButtonForwardNext,
        actionButtonBackPrevious,
        actionButtonEnd,
        actionButtonBeginning,
        actionButtonReturn,
        actionButtonDocument,
        actionButtonSound,
        actionButtonMovie,
        gear6,
        gear9,
        funnel,
        mathPlus,
        mathMinus,
        mathMultiply,
        mathDivide,
        mathEqual,
        mathNotEqual,
        cornerTabs,
        squareTabs,
        plaqueTabs,
        chartX,
        chartStar,
        chartPlus,
    }

    [Serializable]
    public enum ST_TextShapeType
    {
        textPlain,
        textStop,
        textTriangle,
        textCurveUp,
        textCanDown,
        textWave1,
        textDoubleWave1,
        textDeflate,
        textDeflateBottom,
        textFadeUp,
        textSlantUp,
        textCascadeUp,
        textArchUp,
        textArchDown,
        textCircle,
        textButton,
    }

    [Serializable]
    public enum ST_PathFillMode
    {
        none,
        norm,
        lighten,
        lightenLess,
        darken,
        darkenLess,
    }

    #endregion

    #region Complex Types

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PresetGeometry2D
    {
        [System.Xml.Serialization.XmlArrayItemAttribute("gd", IsNullable = false)]
        public CT_GeomGuide[] avLst;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_ShapeType prst;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PresetTextShape
    {
        [System.Xml.Serialization.XmlArrayItemAttribute("gd", IsNullable = false)]
        public CT_GeomGuide[] avLst;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_TextShapeType prst;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Path2DMoveTo
    {
        public CT_AdjPoint2D pt;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Path2DLineTo
    {
        public CT_AdjPoint2D pt;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Path2DArcTo
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string wR;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string hR;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string stAng;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string swAng;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Path2DClose
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Path2D
    {
        public CT_Path2D()
        {
            this.w = ((long)(0));
            this.h = ((long)(0));
            this.fill = ST_PathFillMode.norm;
            this.stroke = true;
            this.extrusionOk = true;
        }

        [System.Xml.Serialization.XmlElementAttribute("arcTo", typeof(CT_Path2DArcTo))]
        [System.Xml.Serialization.XmlElementAttribute("close", typeof(CT_Path2DClose))]
        [System.Xml.Serialization.XmlElementAttribute("cubicBezTo", typeof(CT_AdjPoint2D[]))]
        [System.Xml.Serialization.XmlElementAttribute("lnTo", typeof(CT_Path2DLineTo))]
        [System.Xml.Serialization.XmlElementAttribute("moveTo", typeof(CT_Path2DMoveTo))]
        [System.Xml.Serialization.XmlElementAttribute("quadBezTo", typeof(CT_AdjPoint2D[]))]
        [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
        public object[] Items;

        [System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public ItemsChoiceType[] ItemsElementName;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(typeof(long), "0")]
        public long w;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(typeof(long), "0")]
        public long h;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(ST_PathFillMode.norm)]
        public ST_PathFillMode fill;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool stroke;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool extrusionOk;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_GeomRect
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string l;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string t;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string r;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string b;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_AdjPoint2D
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string x;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string y;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_ConnectionSite
    {
        public CT_AdjPoint2D pos;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ang;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_GeomGuide
    {
        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")]
        public string name;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string fmla;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_CustomGeometry2D
    {
        [System.Xml.Serialization.XmlArrayItemAttribute("gd", IsNullable = false)]
        public CT_GeomGuide[] avLst;

        [System.Xml.Serialization.XmlArrayItemAttribute("gd", IsNullable = false)]
        public CT_GeomGuide[] gdLst;

        [System.Xml.Serialization.XmlArrayItemAttribute("ahPolar", typeof(CT_PolarAdjustHandle), IsNullable = false)]
        [System.Xml.Serialization.XmlArrayItemAttribute("ahXY", typeof(CT_XYAdjustHandle), IsNullable = false)]
        public object[] ahLst;

        [System.Xml.Serialization.XmlArrayItemAttribute("cxn", IsNullable = false)]
        public CT_ConnectionSite[] cxnLst;

        public CT_GeomRect rect;

        [System.Xml.Serialization.XmlArrayItemAttribute("path", IsNullable = false)]
        public CT_Path2D[] pathLst;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_XYAdjustHandle
    {
        public CT_AdjPoint2D pos;

        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")]
        public string gdRefX;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string minX;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string maxX;

        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")]
        public string gdRefY;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string minY;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string maxY;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PolarAdjustHandle
    {
        public CT_AdjPoint2D pos;

        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")]
        public string gdRefR;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string minR;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string maxR;

        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")]
        public string gdRefAng;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string minAng;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string maxAng;
    }

    #endregion
}
